package com.jt.helloworld.designpattern.dataaccessobject;

/**
 * 数据访问对象模式
 *
 * 用于把低级的数据访问 API 或操作从高级的业务服务中分离出来
 *
 * 数据访问对象接口（Data Access Object Interface） - 该接口定义了在一个模型对象上要执行的标准操作。
 * 数据访问对象实体类（Data Access Object concrete class） - 该类实现了上述的接口。该类负责从数据源获取数据，数据源可以是数据库，也可以是 xml，或者是其他的存储机制。
 * 模型对象/数值对象（Model Object/Value Object） - 该对象是简单的 POJO，包含了 get/set 方法来存储通过使用 DAO 类检索到的数据。
 */
public class DataAccessObjectDemo {

    public static void main(String[] args) {
        StudentDao studentDao = new StudentDaoImpl();

        for(Student student: studentDao.listStudent()){
            System.out.println("Student: [RollNo : " + student.getRollNo() +
                    ", Name : " + student.getName() + "]");
        }

        Student student = studentDao.listStudent().get(0);
        student.setName("Michael");
        studentDao.updateStudent(student);

        studentDao.getStudent(0);
        System.out.println("Student: [RollNo : " + student.getRollNo() +
                ", Name : " + student.getName() + "]");

    }
}
